/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package finansowy;
//test
import bazy.HibernateUtil;
import bazy.Zamowienia;
import formularze.Formularz;
import formularze.Zgl_aw;
import java.util.List;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.ConfigurableNavigationHandler;
import javax.faces.context.FacesContext;
import logowanie.LogBean;
import org.hibernate.Query;
import org.hibernate.Session;

/**
 * Komponent zarządzający do obsługi panelu finansowego.
 * @author Jan Slowik
 */
@Named(value = "panelFinansowy")
@RequestScoped
public class PanelFinansowy {

    private Session session = null;
    private final String zam_got_typ = "Zamowienie gotowkowe";
    private final String zam_wew_typ = "Zamowienie wewnetrzne";
    private final String zgl_aw_typ = "Zgloszenie awarii";
    private FacesContext context = FacesContext.getCurrentInstance();
    private LogBean bean = (LogBean) context.getApplication().evaluateExpressionGet(context, "#{logBean}", LogBean.class);
    private List<Zamowienia> lista_wplywajace = null;
    private List<Zamowienia> lista_do_akceptacji = null;
    private List<Zamowienia> lista_do_uzupelnienia = null;
    private Formularz form = null;
    private int id_zam;
    private String akcja;
    private String message;

    /** Creates a new instance of KontrolerZamowien */
    public PanelFinansowy() {
    }

    public List<Zamowienia> getLista_wplywajace() {
        return lista_wplywajace;
    }

    public List<Zamowienia> getLista_do_akceptacji() {
        return lista_do_akceptacji;
    }

    public List<Zamowienia> getLista_do_uzupelnienia() {
        return lista_do_uzupelnienia;
    }



    private void wczytaj_listy() {
        session = HibernateUtil.getSessionFactory().openSession();
        org.hibernate.Transaction tx = session.beginTransaction();

        Query query = session.createQuery("from Zamowienia zam where zam.statusy.idstatusy =2 ");
        lista_wplywajace = (List<Zamowienia>) query.list();

        query = session.createQuery("from Zamowienia zam where zam.statusy.idstatusy =3 or zam.statusy.idstatusy =7");
        lista_do_akceptacji = (List<Zamowienia>) query.list();

        query = session.createQuery("from Zamowienia zam where zam.statusy.idstatusy =6");
        lista_do_uzupelnienia = (List<Zamowienia>) query.list();

        tx.commit();
    }

    public String wyswietl(String typ) {
        String wybor = "";
        if (typ.equals(zam_wew_typ)) {
            wybor = "gen_zap_wew";
        } else if (typ.equals(zam_got_typ)) {
            wybor = "gen_zap_got";
        } else if (typ.equals(zgl_aw_typ)) {
            wybor = "gen_zgl_aw";
        }

        return wybor;
    }

    public String getAkcja() {
        return akcja;
    }

    public void setAkcja(String akcja) {
        this.akcja = akcja;
    }

    public int getId_zam() {
        return id_zam;
    }

    public void setId_zam(int id_zam) {
        this.id_zam = id_zam;
    }

    public void inicjalizuj() {
        if (!bean.isLoggedin() || !bean.getUprawnienia().equals("finansowy")) {
            ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler) context.getApplication().getNavigationHandler();
            handler.performNavigation("brak_dostepu");
        }
        if (akcja != null) {
            if (akcja.equals("PW")) {
                potwierdz_wplyniecie(id_zam);
            } else if (akcja.equals("ZAT")) {
                zatwierdz(id_zam);
            } else if (akcja.equals("OD")) {
                odrzuc(id_zam);
            } else if (akcja.equals("ZAK")) {
                zakwestionuj(id_zam);
            } else if (akcja.equals("UZ")) {
                uzupelnij(id_zam);
            }
        }
        wczytaj_listy();
    }

    public void potwierdz_wplyniecie(int id) {
        form = new Zgl_aw();
        form.zmien_status(id, 3, bean.getId_uz());
        message = "ZADANIE ZOSTALO WYKONANE POPRAWNIE";

    }

    public void zatwierdz(int id) {
        form = new Zgl_aw();
        form.zmien_status(id, 5, bean.getId_uz());
        message = "ZADANIE ZOSTALO WYKONANE POPRAWNIE";

    }

    public void odrzuc(int id) {
        form = new Zgl_aw();
        form.zmien_status(id, 4, bean.getId_uz());
        message = "ZADANIE ZOSTALO WYKONANE POPRAWNIE";

    }

    public void zakwestionuj(int id) {
        form = new Zgl_aw();
        form.zmien_status(id, 6, bean.getId_uz());
        message = "ZADANIE ZOSTALO WYKONANE POPRAWNIE";

    }

    public void uzupelnij(int id) {
        form = new Zgl_aw();
        form.zmien_status(id, 7, bean.getId_uz());
        message = "ZADANIE ZOSTALO WYKONANE POPRAWNIE";


    }

    public boolean przyciski_kwesty(Integer index_xam) {
        form = new Zgl_aw();
        if (form.get_status(index_xam) == 6) {
            return true;
        } else {
            return false;
        }

    }

    public void zakoncz() {
        session.close();
    }

    public boolean jestKomunikat() {
        if (getMessage() != null) {
            return true;
        }
        return false;
    }

    /**
     * @return the message
     */
    public String getMessage() {
        return message;
    }

    /**
     * @param message the message to set
     */
    public void setMessage(String message) {
        this.message = message;
    }
}
